
`include "Fetch.v"
`include "Decode.v"
`include "Execute.v"
`include "Memory.v"
`include "Writeback.v"
`include "Registers.v"
`include "Forwarding.v"


module Mips (

	input			clock,
	input			reset,

	// Fetch <-> MC
	output				if_mc_en,
	output		[31:0]	if_mc_addr,	
	input		[31:0]	mc_if_data,

	// Memory <-> MC
	output				mem_mc_rw,
	output				mem_mc_en,
	output		[31:0]	mem_mc_addr, 
	inout		[31:0]	mem_mc_data,
	output				mem_mc_en1h,
	output				mem_mc_en1l,
	output				mem_mc_en2h,
	output				mem_mc_en2l
	
	);
	
	// Busca da instrução.
	Fetch FETCH( ... );


	// Decodificação da instrução.
	Decode DECODE( ... );


	// Execução.
	Execute EXECUTE( ... );


	// Acesso à memória.
	Memory MEMORY( ... );
   

	// Escrita no banco de registradores.
	Writeback WRITEBACK( ... );

	
	// Banco de registradores.
	Registers REGS( ... );
	
	
	// Unidade de encaminhamento.
	Forwarding FW( ... );
	
	...
	
endmodule



